package DAO;

import AccesoBD.AccesoBaseDatos;
import Dominio.ProgramaEducativo;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;

public class DAORelacionAlumnoProgramaEducativo {
    private String TABLA_RELACION_ALUMNO_PROGRAMA_EDUCATIVO = "rel_alumno_pe";
    private String COLUMNA_CLAVE_RELACION = "id_rel_alumno_pe";
    private String COLUMNA_CLAVE_INFO_ALUMNO = "usuario_alumno";
    private String COLUMNA_CLAVE_PROGRAMA_EDUCATIVO = "clave_PE";
    private String COLUMNA_SEMESTRE = "semestre";
    private AccesoBaseDatos acceso;
    private Connection conexion = null;
    
    public DAORelacionAlumnoProgramaEducativo() {
        acceso = new AccesoBaseDatos();
        conexion = acceso.abrirConexion();
    }
    
    public void cerrarConexionARelacionAlumnoProgramaEducativo() {
        acceso.cerrarConexion(conexion);
    }
    
    public int obtenerClaveRelacion(int claveInfoAlumno, int claveProgramaEducativo){
        String queryBusqueda = "SELECT " + COLUMNA_CLAVE_RELACION+" FROM " + TABLA_RELACION_ALUMNO_PROGRAMA_EDUCATIVO
                + " WHERE " + COLUMNA_CLAVE_INFO_ALUMNO + " = '" + claveInfoAlumno +"' AND "
                + COLUMNA_CLAVE_PROGRAMA_EDUCATIVO + " = '" + claveProgramaEducativo +"'";
        try {
            Statement sentencia = acceso.crearSentenciaBD(conexion);
            ResultSet resultado = sentencia.executeQuery(queryBusqueda);
            resultado.first();
            if(resultado.getRow() != 0){
                int claveRelacion = resultado.getInt(1);
                return claveRelacion;
            } else {
                System.err.println("No se encontro clave relacionada");
                return -1;
            }
        } catch (SQLException ex) {
            System.err.println("Problemas de SQL:\n"+ex.toString());
            return -1;
        }
    }
    
    public ProgramaEducativo getProgramaEducativoAlumno(int cveInfoAlumno){
       ProgramaEducativo pe;
        try {
            DAOProgramaEducativo daope = new DAOProgramaEducativo();
            String getClvPE = "SELECT "+COLUMNA_CLAVE_PROGRAMA_EDUCATIVO+" FROM "+TABLA_RELACION_ALUMNO_PROGRAMA_EDUCATIVO+" WHERE "+COLUMNA_CLAVE_INFO_ALUMNO+"='"+cveInfoAlumno+"'";
            Statement sentencia = acceso.crearSentenciaBD(conexion);
            ResultSet resultado = sentencia.executeQuery(getClvPE);
            resultado.first();
            if(resultado.getRow()!=0){
                int clvPE = resultado.getInt(1);
                pe = daope.buscarPrograma(clvPE);
                return pe;
            }
        } catch (SQLException ex) {
            System.err.println("Problemas de SQL:\n"+ex.toString());
        }
        return null;
   }
  
    public int obtenerClavePE(int clvInfoAlumno){
        int clavePE = 0;
        try {
            Statement sentenciaBusqueda = acceso.crearSentenciaBD(conexion);
            String querySrch ="SELECT " + COLUMNA_CLAVE_PROGRAMA_EDUCATIVO + " FROM " + TABLA_RELACION_ALUMNO_PROGRAMA_EDUCATIVO + " WHERE " 
                    + COLUMNA_CLAVE_INFO_ALUMNO + " = '" + clvInfoAlumno + "'";
            ResultSet registros = sentenciaBusqueda.executeQuery(querySrch);
            while(registros.next()){
            clavePE = registros.getInt(1);
            }
        } catch (SQLException ex) {
            Logger.getLogger(DAOInformacionAlumno.class.getName()).log(Level.SEVERE, null, ex);
        }
        return clavePE;
    }
    
    public int obtenerClaveRelacionAlumnoPE(int clvInfoAlumno){
        int clavePE = 0;
        try {
            Statement sentenciaBusqueda = acceso.crearSentenciaBD(conexion);
            String querySrch ="SELECT " + COLUMNA_CLAVE_RELACION + " FROM " + TABLA_RELACION_ALUMNO_PROGRAMA_EDUCATIVO + " WHERE " 
                    + COLUMNA_CLAVE_INFO_ALUMNO + " = '" + clvInfoAlumno + "'";
            ResultSet registros = sentenciaBusqueda.executeQuery(querySrch);
            while(registros.next()){
            clavePE = registros.getInt(1);
            }
        } catch (SQLException ex) {
            Logger.getLogger(DAOInformacionAlumno.class.getName()).log(Level.SEVERE, null, ex);
        }
        return clavePE;
    }

    public boolean existeAlumnoRelacionadoConPE(int claveIntPE) {
        boolean existe = false;
        try {
            Statement sentencia = acceso.crearSentenciaBD(conexion);
            String query = "SELECT * FROM " + TABLA_RELACION_ALUMNO_PROGRAMA_EDUCATIVO + " WHERE " + COLUMNA_CLAVE_PROGRAMA_EDUCATIVO
                    + " ='" + claveIntPE + "'";
            ResultSet resultado = sentencia.executeQuery(query);
            if (resultado.first()) {
                existe = true;
            }
        } catch (SQLException ex) {
            System.out.println("Ocurrió un problema al intentar recuperar la asignatura como requerimiento académico.\n");
        }
        return existe;
    }
}
